package com.lhj.bootdemo.designmode.proxy.cglib;

import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * @author lhj
 * @version 1.0
 * @date 2022/5/18 9:58 上午
 * @description: cglib动态代理：cglib是针对类实现代理，主要是对指定的类生成一个子类，覆盖其中的方法。
 * 我们用Spring中 Enhancer 的方式来写一个CglibProxy：
 */

public class CglibProxy implements MethodInterceptor {

    @Override
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
        System.out.println("cglib method before");
        //执行代理对象的父类方法
        Object o1 = methodProxy.invokeSuper(o, objects);
        System.out.println("cglib method after");
        return o1;
    }
}
